package com.sfx.messagequeue.common.consumer;

import com.sfx.messagequeue.common.exception.MQException;
import com.sfx.messagequeue.mqServer.core.BasicProperties;

import java.io.IOException;

/**
 * Created with IntelliJ IDEA.
 * Description: 是一个回调函数,->函数式接口,将来调用者可以使用Lambda表达式进行调用
 * 消费者的回调
 * User: sfx
 * Date: 2023-08-08
 * Time: 19:56
 */
@FunctionalInterface
public interface Consumer {
    /**
     * 这个Consumer是一个回调函数
     * 这个handleDelivery方法是在服务器接收到消息之后进行调用
     * 通过这个方法就可以将消息推送给订阅者
     * @param consumerTag  消费者标识
     * @param basicProperties 消息的核心属性
     * @param body 消息本体数据
     */
    void handleDelivery(String consumerTag,
                        BasicProperties basicProperties,
                        byte[] body) throws MQException, IOException;
}